package com.vhall.component.service.data;

import com.vhall.component.entity.data.vo.DataExportParamVO;
import com.vhall.component.entity.data.vo.ExportListRspVO;
import com.vhall.component.entity.data.vo.ExportMessageReqVO;
import com.vhall.component.entity.data.vo.ExportReservationReqVO;
import com.vhall.component.entity.export.vo.ExportUvPreviewPageReqVO;
import com.vhall.component.entity.interactive.vo.DataMarketBaseReqVo;
import com.vhall.component.entity.interactive.vo.QaExportReqVo;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author guoxin.wang
 * @date 2021-06-18 10:37
 */
public interface DataExportService {

    /**
     * 查找导出记录
     *
     * @param reqVO 参数
     * @return 返回值
     */
    ExportListRspVO exportListAction(DataExportParamVO reqVO);

    /**
     * 导出pv
     *
     * @param reqVO 参数
     * @return 返回值
     */
    String exportPvAction(DataExportParamVO reqVO);

    /**
     * 导出uv
     *
     * @param reqVO 参数
     * @return 返回值
     */
    String exportUvAction(DataExportParamVO reqVO);

    /**
     * 导出消息
     *
     * @param reqVO 参数
     * @return 返回值
     */
    Boolean exportMessage(ExportMessageReqVO reqVO, Integer accountId);

    /**
     * 导出预约数据
     * @param reqVO
     * @param accountId
     * @return
     */
    Boolean exportReservation(ExportReservationReqVO reqVO, Integer accountId);

    /**
     * 导出问答消息
     *
     * @param reqVO 参数
     * @return 返回值
     */
    Boolean exportQa(QaExportReqVo reqVO);

    void exportDataMarket(DataMarketBaseReqVo reqVO, HttpServletRequest request, HttpServletResponse response) throws IOException;

    Boolean exportWatchPvH5AddApp(DataExportParamVO reqVO);

    Boolean exportWatchPvApp(DataExportParamVO reqVO);

    Boolean exportProduct(DataExportParamVO reqVO);
    Boolean exportProductClick(DataExportParamVO reqVO);

    Boolean exportPendant(DataExportParamVO reqVO);
    Boolean exportPendantClick(DataExportParamVO reqVO);

    Boolean exportplayVolumeTrend(DataExportParamVO reqVO);

    /**
     * 导出预告页访问人数
     * @param reqVO
     * @param accountId
     * @return
     */
    Boolean exportUvPreviewPage(ExportUvPreviewPageReqVO reqVO, Integer accountId);
}
